﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ImobitechDao;
using ImobitechDao.Repositories;

namespace ImobitechModel.Facade
{
    public class AnuncioFacade
    {
        private static AnuncioFacade instance;

        private AnuncioFacade()
        {

        }

        public static AnuncioFacade getInstance()
        {
            if (instance == null)
                instance = new AnuncioFacade();

            return instance;
        }

        public Object insertPlan(Plan plan)
        {
            IPlanRepository _planlRepositorio = new PlanRepository(new ImobitechEntities());
            return _planlRepositorio.Create(plan);
        }

        public Object editaPlan(Plan plan)
        {
            IPlanRepository _planlRepositorio = new PlanRepository(new ImobitechEntities());
            return _planlRepositorio.Update(plan);
        }

        public Object retornaPlano(int id)
        {
            IPlanRepository _planlRepositorio = new PlanRepository(new ImobitechEntities());
            return _planlRepositorio.GetById(id);
        }

        public Object retornaPlanos()
        {
            IPlanRepository _planlRepositorio = new PlanRepository(new ImobitechEntities());
            return _planlRepositorio.GetAll();
        }

        public Object retornaAnuncios(bool aprovado, int tipo)
        {
            IAnuncioRepository _anuncioRepositorio = new AnuncioRepository(Contexto.Instance.Context);
            return _anuncioRepositorio.getAllAprovado(aprovado, tipo);
        }

        public Object retornaAnuncios(bool aprovado)
        {
            IAnuncioRepository _anuncioRepositorio = new AnuncioRepository(Contexto.Instance.Context);
            return _anuncioRepositorio.getAllAprovado(aprovado);
        }

        public Object retornaAnuncios(bool aprovado, int tipo, string cidade, string estado, string[] bairro, int tipoImovel, int valor, int metragem, int quartos, int garagem)
        {
            IAnuncioRepository _anuncioRepositorio = new AnuncioRepository(Contexto.Instance.Context);
            return _anuncioRepositorio.getBusca(aprovado, tipo, cidade, estado, bairro, tipoImovel, valor, metragem, quartos, garagem);
        }

        public object retornaAnuncio(int id)
        {
            IAnuncioRepository _anuncioRepositorio = new AnuncioRepository(Contexto.Instance.Context);
            return _anuncioRepositorio.GetById(id);
        }

        public object marcaVisita(Visita visita)
        {
            IVisitaRepository _visitaRepositorio = new VisitaRepository(Contexto.Instance.Context);
            return _visitaRepositorio.Create(visita);
        }

        public object retornaFuncionarioVisita(DateTime dataAntes, DateTime dataDepois)
        {
            IVisitaRepository _visitaRepositorio = new VisitaRepository(Contexto.Instance.Context);
            return _visitaRepositorio.buscaFuncionario(dataAntes, dataDepois);
        }

        public object candidatar(Candidato candidato)
        {
            ICandidatoRepository _candidatoRepositorio = new CandidatoRepository(Contexto.Instance.Context);
            return _candidatoRepositorio.Create(candidato);
        }

        public Object atualizaAnuncio(Anuncio anuncio)
        {
            IAnuncioRepository _anuncioRepositorio = new AnuncioRepository(Contexto.Instance.Context);
            return _anuncioRepositorio.Update(anuncio);
        }
    }
}